// 包声明：指定当前类所在的文件夹路径，com.itheima.variable表示在com/itheima/variable文件夹下
package com.itheima.variable;

// public：访问修饰符，表示这个类可以被任何地方访问
// class：关键字，用于定义一个类
// VariableDemo2：类名，遵循驼峰命名法，代表变量示例类2
public class VariableDemo2 {
    // public：方法可以被任何地方访问
    // static：静态方法，可以通过类名直接调用，不需要创建对象
    // void：返回值类型，表示方法不返回任何值
    // main：主方法名，是程序的入口点
    // String[] args：方法参数，接收命令行参数的字符串数组
    public static void main(String[] args) {
        // 目标：掌握8种基本数据类型定义变量。
        // 调用printVariable()方法来演示8种基本数据类型
        printVariable();

    }

    // 请帮我设计一个方法，打印出8种基本数据类型定义的变量。
    // public：方法可以被任何地方访问
    // static：静态方法，可以通过类名直接调用
    // void：不返回任何值
    // printVariable：方法名，用于演示各种数据类型
    public static void printVariable() {
        // 1. 整型 - 用于存储整数
        // byte：字节型，范围是-128到127，占用1个字节
        // b：变量名
        // 10：整数字面量
        byte b = 10;
        // byte b2 = 128; // 越界了，报错：128超出了byte类型的范围（-128~127）
        
        // short：短整型，范围是-32768到32767，占用2个字节
        // s：变量名
        // 20：整数字面量
        short s = 20;
        
        // int：整型，范围是-2147483648到2147483647，占用4个字节
        // i2：变量名
        // 30：整数字面量
        int i2 = 30;
        
        // 注意：随便写一个整数字面量默认是int类型的，334254235555这个数据虽然没有超过long的范围，但是超过了int的范围，所以报错
        // 如果希望334254235555这个是long类型，需要显示的指定，加上L或者l
        
        // long：长整型，范围很大，占用8个字节
        // l1：变量名
        // 334254235555L：长整型字面量，必须在数字后加L或l，推荐使用L（避免与数字1混淆）
        long l1 = 334254235555L;
        
        // 小的整数字面量可以直接赋值给long类型，因为不会有范围问题
        long l = 40;


        // 2. 浮点型 - 用于存储小数
        // 注意：随便写一个浮点数字面量默认是double类型的，如果希望1.1是float类型的，必须加上f或者F
        // float f2 = 1.1; // 报错：1.1默认是double类型，不能直接赋值给float类型
        
        // float：单精度浮点型，精度较低，占用4个字节
        // f：变量名
        // 1.1f：float类型字面量，必须在数字后加f或F
        float f = 1.1f;
        
        // double：双精度浮点型，精度较高，占用8个字节
        // d：变量名
        // 2.2：double类型字面量（默认就是double类型）
        double d = 2.2;

        // 3. 字符型 - 用于存储单个字符
        // char：字符型，占用2个字节，可以存储一个字符
        // c：变量名
        // 'a'：字符字面量，使用单引号括起来的单个字符
        char c = 'a';

        // 4. 布尔型 - 用于存储逻辑值
        // boolean：布尔型，只能存储true或false
        // flag：变量名
        // true：布尔字面量，表示真
        boolean flag = true;
        // flag2：变量名
        // false：布尔字面量，表示假
        boolean flag2 = false;

        // 5. 字符串型（引用数据类型，后面再讲）： 定义字符串变量记住字符串数据的
        // String：字符串类，不是基本数据类型，而是引用数据类型
        // str：变量名
        // "hello"：字符串字面量，使用双引号括起来的字符序列
        String str = "hello";
        // 输出str变量的值，将显示hello
        System.out.println(str);
    }
}
